package br.com.velp.sudecap.util;

import java.text.MessageFormat;
import java.util.Locale;
import java.util.ResourceBundle;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;

/**
 * <sumario>
 * <objetivo> "Rastreabilidade" </objetivo>
 * <autor> EDUARDO SANTOS DE OLIVEIRA </autor>
 * <versao>1.0.0.0</versao>
 * <data_criacao> 17.10.2012 </data_criacao>
 * <data_ultima_alteracao> N/A </data_ultima_alteracao>
 * <descricao> Classe utilitária para recuperação de mensagens do Bundle </descricao>
 * </sumario>
 */
public class MensagemUtil {

    private static final String PACOTE_MENSAGENS_IDIOMAS = "br.com.velp.sudecap.idioma";

    public static String getMensagem(String propriedade) {
        FacesContext context = FacesContext.getCurrentInstance();
        ResourceBundle bundle = context.getApplication().getResourceBundle(context, "msg");
        return bundle.getString(propriedade);
    }

    public static String getMensagem(String propriedade, Object... parametros) {
        String mensagem = getMensagem(propriedade);
        MessageFormat formatter = new MessageFormat(mensagem);
        return formatter.format(parametros);
    }

    public static String getMensagem(Locale locale, String propriedade) {
        ResourceBundle bundle = ResourceBundle.getBundle(MensagemUtil.PACOTE_MENSAGENS_IDIOMAS, locale);
        return bundle.getString(propriedade);
    }

    public static String getMensagem(Locale locale, String propriedade, Object... parametros) {
        String mensagem = getMensagem(locale, propriedade);
        MessageFormat formatter = new MessageFormat(mensagem);
        return formatter.format(parametros);
    }

    public static void exibirMensagemErro(String texto) {
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, texto, texto));
    }

    public static void exibirMensagemErro(String key, String texto) {
        FacesContext.getCurrentInstance().addMessage(key, new FacesMessage(FacesMessage.SEVERITY_ERROR, texto, texto));
    }
    
    public static void exibirMensagemInformacao(String texto) {
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, texto, texto));
    }

    public static void exibirMensagemInformacao(String key, String texto) {
        FacesContext.getCurrentInstance().addMessage(key, new FacesMessage(FacesMessage.SEVERITY_INFO, texto, texto));
    }
    
    public static void exibirMensagemAlerta(String texto) {
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, texto, texto));
    }

    public static void exibirMensagemAlerta(String key, String texto) {
        FacesContext.getCurrentInstance().addMessage(key, new FacesMessage(FacesMessage.SEVERITY_WARN, texto, texto));
    }
    
    public static void exibirMensagemErroFatal(String texto) {
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, texto, texto));
    }
    
    public static void exibirMensagemErroFatal(String key, String texto) {
        FacesContext.getCurrentInstance().addMessage(key, new FacesMessage(FacesMessage.SEVERITY_FATAL, texto, texto));
    }
    
}
